const path = require('path')

module.exports = {
  // 输出文件目录
  outputDir: 'dist',
  // eslint-loader 是否在保存的时候检查
  lintOnSave: true,
  // webpack配置
  chainWebpack: (config) => {
    const resolve = dir => path.join(__dirname, dir)
    config.resolve.alias
      .set('@', resolve('src')) // @ 代替src下的目录
      .set('&', resolve('src/components')) // 用&代替components目录
      .set('utils', resolve('src/utils')) // 用utils代替utils目录

    if (process.env.NODE_ENV === 'production') {
      // 添加打包分析工具
      config
        .plugin('webpack-bundle-analyzer')
        .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
        .end()
      // vuecli3默认开启预先加载模块，提前获取用户未来可能会访问的内容。在首屏会把这十几个路由文件都下载下来
      // config.pluginis.delete('prefetch')
      // config.pluginis.delete('preload')
      // 压缩代码
      config.optimization.minimize(true)
      // 分隔代码
      config.optimization.splitChunks({
        chunks: 'all'
      })
    }
  },
  // configureWebpack: (config) => {
  //   // config.externals = {
  //   //   // key：vue是项目里引入时候要用的，value：是开发依赖库的主人定义的不能修改
  //   //   'vue': 'Vue',
  //   //   'vue-router': 'VueRouter',
  //   //   'vuex': 'Vuex',
  //   //   'axios': 'axios',
  //   // }
  // },
  // vue-loader配置
  // vueLoader: {},
  // 生产环境是否生成 sourceMap 文件
  // false将提高构建速度（map文件能看到具体报错位置）
  productionSourceMap: false,
  // css 相关配置
  css: {
    // 是否使用css分离插件 ExtractTextPlugin
    extract: true,
    // 开启CSS source map
    sourceMap: false,
    // css 预设器配置项
    loaderOptions: {},
    // 启用css modules for all css
    // modules: false
  },
  // webpack-dev-server相关配置
  devServer: {},
  pluginOptions: {}
}
